home *** CD-ROM | disk | FTP | other *** search
- /* P e r p e t u a l C a l e n d a r
-
- ChicagoLand Atari Users Group, SIG*ST /* P e r p e t u a l C a l e n d a r
-
- ChicagoLand Atari Users Group, SIG*ST
- L. M. Buldak, January 1986
-
-
-
- Released to the Public Domain for educational purposes by CL.A.U.G
- */
- #include "obdefs.h"
- #include "define.h"
- #include "gemdefs.h"
- #include "osbind.h"
- #include "stdio.h"
- #include "portab.h"
- /* */
- main()
- {
- char ch_save;
- int day, i, day_no;
- float m, m1, d, y, jul;
- float gf(), julmdy(), djul(), mjul(), yjul();
-
- while (1 == 1) {
- printf("\nEnter the month, then hit SPACEBAR, not <CR>");
- printf("\nWhat month? 1 - 12 (type 0 to quit): ");
- scanf("%f", &m); /* get the month from console */
- ch_save = getchar(); /* save the space bar character*/
- if (m <= 0) break; /* end prog if month <= zero */
- if (m >= 13) break; /* accept only 1 - 12 or quit */
- printf("\n"); /* new line please.......*/
- printf("\nEnter the year, then hit SPACEBAR, not <CR>");
- printf("\nWhat year do you want the calendar for?: ");
- scanf("%f", &y); /* get the year from console */
- ch_save = getchar(); /* save the space bar character*/
- printf("\n"); /* new line please.......*/
- title(m, y); /* get month from table */
- printf("%4.0f\n", y); /* display the year */
- printf("\n SU M TU W TH F SA\n"); /*display day hdgs */
- dashes(22); /*execute dashes() function */
- printf("\n"); /* skip a line */
- d = 1; /* set d to one */
- day_no = 1; /* use int day vs. float d */
- m1 = m; /* set m1 to month entered */
- jul = julmdy(m, d, y); /* execute julmdy() function*/
- day = dow(jul); /* execute dow() func*/
- for (i = 0; i < day; ++i) printf(" "); /*set 1st day*/
- while (m1 == m) { /* do loop to get days */
- printf(" %2d", day_no); /*prnt int day of week */
- if (day == 6) printf("\n"); /*nu-line if 7 days*/
- jul = jul + 1; /* increment the julian day */
- m1 = mjul(jul); /* get julian month */
- day = dow(jul); /* get day of the week */
- ++day_no; /* increment calendar day */
- }
- printf("\n");
- }
- }
- /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
- /* M O N T H N A M E T A B L E */
- title(m, y)
- float m, y;
- {
- int month;
- month = m;
- printf("\n ");
- switch (month) {
- case 1: printf(" January ");
- break;
- case 2: printf(" February ");
- break;
- case 3: printf(" March ");
- break;
- case 4: printf(" April ");
- break;
- case 5: printf(" May ");
- break;
- case 6: printf(" June ");
- break;
- case 7: printf(" July ");
- break;
- case 8: printf(" August ");
- break;
- case 9: printf("September ");
- break;
- case 10: printf(" October ");
- break;
- case 11: printf(" November ");
- break;
- case 12: printf(" December ");
- break;
- }
- }
- /* * * * * * * * * * * * * * * * * * * * * * * * * * * * */
- /* return the day of the week */
- dow(jul)
- float jul;
- {
- int day;
- float dayno, dw;
- double floor(), fval, x;
- dayno = jul - 1720982;
- dw = (dayno + 5)/7;
- fval = dw;
- x = dw - floor(fval);
- day = 7*x + 0.5;
- return day;
- }
- /* * * * * * * * * * * * * * * * * * * * * * * * * * * * */
- /* julmdy() - - Convert Date to Julian Day Number */
- float julmdy(m, d, y)
- float m, d, y;
- {
- float jul, m1, y1;
- double floor(), x, z, fval;
- if (m > 2) {
- m1 = m + 1;
- y1 = y;
- }
- else {
- m1 = m + 13;
- y1 = y - 1;
- }
- fval = 365.25 * y1;
- x = floor(fval);
- fval = 30.6001 * m1;
- z = floor(fval);
- jul = x + z + d + 1720982;
- return jul;
- }
- /* * * * * * * * * * * * * * * * * * * * * * * * * * * */
- /* djul() - - Convert Julian Day Number to Date */
- float djul(jul)
- float jul;
- {
- float dayno, m, d, y;
- double floor(), x, z, fval;
- dayno = jul - 1720982;
- fval = ((dayno - 122.1)/365.35);
- y = floor(fval);
- fval = 365.25 * y;
- x = ((dayno - floor(fval))/30.6001);
- m = floor(x);
- fval = 365.25 * y;
- x = floor(fval);
- fval = 30.6001 * m;
- z = floor(fval);
- d = dayno - x - z;
- return d;
- }
- /* * * * * * * * * * * * * * * * * * * * * * * * * * * * */
- /* */
- float mjul(jul)
- float jul;
- {
- float dayno, m, d, y;
- double floor(), x, z, fval;
- dayno = jul - 1720982;
- fval = ((dayno - 122.1)/365.25);
- y = floor(fval);
- x = 365.25 * y;
- fval = ((dayno - floor(x))/30.6001);
- m = floor(fval);
- if (m < 14) m = m - 1;
- else m = m -13;
- return m;
- }
- /* * * * * * * * * * * * * * * * * * * * * * * * * * * * */
- /* */
- float yjul(jul)
- float jul;
- {
- float dayno, m, d, y;
- double floor(), z, x, fval;
- dayno = jul - 1720982;
- fval = ((dayno - 122.1)/365.25);
- y = floor(fval);
- fval = (365.25 * y);
- z = floor(fval);
- fval = ((dayno - z)/30.6001);
- m = floor(fval);
- if (m < 14) m = m - 1;
- else m = m - 13;
- if (m < 3) y = y + 1;
- return y;
- }
- /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
- /* D A S H E S U T I L I T Y */
- dashes(n)
- int n;
- {
- int i;
- for (i = 0; i < n; i = i + 1) printf("-");
- /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
- /* T H A T ' S A L L F O L K S */
- /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
- }
- ②②②②②②②②②②②②②②②②②②②②②②②②②②②②②②②②②②②②②②②②②②②②②②②②②②②②②②②②②②②②②②②②②②②②②②②②②②②②②②②②②②②②②②②②②②②②②②②②②②②②②②②②②②②②②②